package lib;

import java.io.File;
import java.util.ArrayList;

import rmi.Message;

public abstract class Protocole {
	
	/**
	 * Le methode pour un client id(Identificateur) qui receive un message
	 * @param msg Message
	 * @param id  Identificateur de client
	 * @return Message
	 */
	public abstract Message recuMsgs(Message msg,int id);
	
	/**
	 * Le methode pour envoyer un message
	 * @param msg Message
	 */
	final static long SLEEPTIMES = 10000;
	public abstract void envMsg(Message msg);
	
	/**
	 * retourner la liste de messages
	 * @param msg 
	 * 				Message recu
	 * @param aProc
	 * 				L'identificateur de client qui recieve le message
	 * @return retourner la liste de messages recu pas le client 
	 */
	public abstract ArrayList<Message> recuMsg(Message msg, int aProc);
	
	/**
	 * méthode pour lancer les thread pour chaque protocole
	 * @param msg
	 * @param logfile
	 * @param flag
	 * @param length
	 * @param list
	 */
	public abstract void lancerThread(Message msg,File logfile,int flag,int length,ArrayList<Integer> list);
	
	/**
	 * @param compteur 
	 * 				   le nombre de clients
	 */
	public abstract void init(int compteur);
}
